RDS (Radio Data System) and RBDS (Radio Broadcast Data System) are communications protocols for embedding data in FM (frequency modulated) analogue broadcasts. RDS and RBDS bit streams have a common organisational structure. They have a bit rate of 1187.5 bits per second. Each bit stream is organised into groups, each group consisting of 4 blocks. Each block is assigned a block type from block types A, B, C, C′, D and E. For RDS, the first block of a group is A, the second block is of type B, the third is of type C or C′, the fourth is of type D. In RBDS some blocks may have type E. Each block consists of 26 bits including 16 information bits and 10 parity bits. The information bits comprise the embedded data. The parity bits are derived from the information bits by combining the information bits with a generator sequence (often referred to as a shortened cyclic code) and one of a selection of 10 bit words defined by the RDS/RBDS protocol. This derivation may be carried out as follows.
The information bits (expressed as a 1×16 matrix) are multiplied by a matrix known as the generator matrix G. Matrix G is a 26×16 matrix derived from the generator polynomial:g(x)=x10+x8+x7+x5+x4+x3+1  (equation 1)
The multiplication results in a 26×1 matrix, the first 16 terms of which are the 16 information bits. The remaining 10 terms are XORed with one of a selection of 10 bit words (offset words) defined by the RDS/RBDS protocol. Six offset words are defined at present, each associated with a respective block type. Accordingly, the remaining 10 terms are XORed with the offset word associated with the block type of the block being generated. The 10 bits resulting from the XOR operation are the parity bits.
The function relating the parity bits to the information bits is known to the receiving end of the transmission. The consequent redundancy in the decoded embedded data can be used by the receiver to detect errors and/or correct errors in the data.
The RDS and RBDS protocols use the same error correction code. A standard way of implementing error correction for the received data is to decode the data based on known properties of the shortened cyclic code used to generate the parity bits. For example the April 1998 RBDS standard describes using an error-trapping decoder that operates by performing a bit-by-bit recovery of the encoded bits from the demodulated waveform, followed by decoding of the encoded bits so as to minimise the Hamming distance between the received bits and the estimated transmitted bits, the estimated transmitted bits having been determined based on known properties of the shortened cyclic code.
The performance of a decoding technique can be measured in terms of the percentage of blocks that are received with one or more errors. FIG. 1 shows the block decoding performance of the error-trapping decoder method as a function of the signal to noise ratio (SNR) of the received signal. FIG. 1 also shows the block decoding performance of hard-decision decoding. Hard-decision decoding is when the received demodulated waveform is recovered and decoded on a bit-by-bit basis with no error correction. FIG. 1 shows that error-trapping decoding performs significantly better than hard-decision decoding over the SNR range measured. However error-trapping decoding still performs poorly at low SNR. The percentage block error rate for error-trapping decoding exceeds 25% once the SNR has dropped to 4.5 dB, and exceeds 50% once the SNR has dropped to 3 dB.
There is thus a need for an improved method of decoding a received RDS/RBDS signal that increases receiver sensitivity.